/*
员工模块
 */
const userDao = require('../dao/UserDao');
/*
在routes目录中建立一个统一的webRouters.js
然后通过此webRouters.js完成所有的模块加载：
const foodController = require('./controller/FoodController');
router.post('/addFood', foodController.loginData);                            // 增
router.post('/deleteFood', foodController.loginData);                         // 删
router.post('/updateFood', foodController.loginData);                         // 改
router.post('/selectFood', foodController.loginData);                         // 查
 */

function ff() {
    console.log('预留公共函数');
}

/**
 * 公共函数，输出日志，输出返回前端信息
 * @param resultData   数据库返回数据
 * @param resp         响应对象
 * @param msgStr       返回前端提示文字
 * @param action       判断是否是select查询返回，因为select查询返回会新增data字段(4为select，1为insert，2为delete，3为update，目前除了select单独处理，其余暂时没有做分离)
 * @param data         如果执行的查询，则data传递是查询的结果值，增删改操作，不用传递data对象
 */
function console_Logs_Send(resultData, resp, msgStr, action, data) {
    console.log('UserController 数据库返回信息如下:');
    console.log(resultData);
    let json = {};
    // 如果dao层返回500状态，代表失败，如果返回200状态，代表成功
    if(resultData.code === 500)
        json = {code:500, msg:'服务器异常，请稍候重试'};  // 如果出现异常，通过两种情况，1.数据库连接出错，2.数据表结构操作出错
    else {
        if(action === 4)   // 如果action为4，代表查询处理，返回对应的data对象
            json = {code:200, msg:msgStr, data:data};
        else
            json = {code:200, msg:msgStr};
    }
    console.log(json);
    // 响应给前台页面
    resp.send(json);
}

module.exports = {
    async addUser(req,resp){                                // 新增处理
        let resultData = await userDao.insertUserData(req.body.username, req.body.password, req.body.nickname, req.body.phone, new Date());
        console_Logs_Send(resultData, resp, '新增数据成功', 1);
    },
    async deleteUserById(req,resp){                          // 根据传递的用户id删除user表中某一条用户记录
        let resultData = await userDao.deleteUserById(req.body.id);
        console_Logs_Send(resultData, resp, '删除数据成功', 2);
    },
    async updateUserById(req,resp){                          // 根据传递的主键id更新表中某一条完整记录
        let resultData = await userDao.updateUserById(req.body.password, req.body.nickname, req.body.phone, req.body.id);
        console_Logs_Send(resultData, resp, '更新数据成功', 3);
    },
    async selectAllUser(req,resp){                          // 查询所有菜品
        let resultData = await userDao.selectAllUser();
        console_Logs_Send(resultData, resp, '查询数据成功', 4, resultData.data);
    },
    async selectUserById(req,resp){                          // 基于主键id查询一条记录
        let resultData = await userDao.selectFoodById(req.body.id);
        console_Logs_Send(resultData, resp, '查询数据成功', 4, resultData.data);
    },
    async selectUserByPhone(req,resp){                          // 基于电话查询一条记录
        let resultData = await userDao.selectUserByPhone(req.query.phone);
        console_Logs_Send(resultData, resp, '查询数据成功', 4, resultData.data);
    },
    async selectUserByLimit(req,resp){                          // 基于页码进行分页处理
        let page = req.body.page;                               // 获取页码
        let startIndex = (page - 1) * 10;                       // 计算起始显示下标， 默认每页显示10条
        let resultData = await userDao.selectFoodByLimit(startIndex);
        console_Logs_Send(resultData, resp, '查询数据成功', 4, resultData.data);
    },
    async selectUserCount(req,resp){                          // 根据用户传递模糊菜品名称进行统计个数
        let resultData = await userDao.selectFoodCount(req.query.food_name);
        console_Logs_Send(resultData, resp, '查询数据成功', 4, resultData.data);
    }
};
